#include <algorithm>
#include <cstdio>

const int N = 55;
const double eps = 1e-6;
int n;
long double b[N][N];

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("testdata.in", "r", stdin);
  freopen("testdata.out", "w", stdout);
#else
  freopen("P2455 [SDOI2006]线性方程组.in", "r", stdin);
  freopen("P2455 [SDOI2006]线性方程组.out", "w", stdout);
#endif
#endif

  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n + 1; ++j) {
      scanf("%Lf", &b[i][j]);
    }
  }
  int row = 1;
  for (int i = 1; i <= n; ++i) {
    int tar = row;
    for (int j = row + 1; j <= n; ++j) {
      if (std::abs(b[j][i]) > std::abs(b[tar][i])) tar = j;
    }
    std::swap(b[tar], b[row]);
    if (std::abs(b[row][i]) <= eps) {
      continue;
    }
    for (int j = n + 1; j >= i; --j) b[row][j] /= b[row][i];
    for (int j = 1; j <= n; ++j) {
      if (row != j) {
        double rate = b[j][i];
        for (int k = n + 1; k >= i; --k) b[j][k] -= b[row][k] * rate;
      }
    }
    ++row;
  }
  if (row <= n) {
    while (row <= n)
      if (std::abs(b[row++][n + 1]) > eps) return puts("-1"), 0;
    return puts("0"), 0;
  }
  for (int i = 1; i <= n; ++i) {
    if (std::abs(b[i][n + 1] / b[i][i]) < 1e-2)
      printf("x%d=0\n", i);
    else
      printf("x%d=%.2Lf\n", i, b[i][n + 1] / b[i][i]);
  }
  return 0;
}